/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladorfuzzy;

import java.util.ArrayList;

/**
 *
 * @author Administrador
 */
//recebi os valores.
//manda fuzzificar.
public class ControladorFuzzy {

    public double entradaInfravermelho;
    public double entradaSonarDistancia;
    public double entradaSonarAngulo;
    public ArrayList<Expressao> expressoes;
    ConjuntoFuzzy saida;
    ArrayList<String> termosSaida = new ArrayList<String>();
    ArrayList<Integer> pontosSaida = new ArrayList<Integer>();

    public ControladorFuzzy(double infra, double sonarD, double sonarA) {
        this.entradaInfravermelho = infra;
        this.entradaSonarDistancia = sonarD;
        this.entradaSonarAngulo = sonarA;

        pontosSaida.add(7);
        pontosSaida.add(13);
        pontosSaida.add(17);
        pontosSaida.add(23);

        termosSaida.add("baixa");
        termosSaida.add("media");
        termosSaida.add("alta");
    }

    public double iniciarControle() {
        Fuzzificacao fuzzificacao = new Fuzzificacao();
        expressoes = fuzzificacao.fuzzificar(entradaInfravermelho, entradaSonarDistancia, entradaSonarAngulo);
        Inferencia inferencia = new Inferencia(expressoes);
        expressoes = inferencia.ativarRegras();

        saida = new ConjuntoFuzzy(pontosSaida, termosSaida);

        Defuzzificacao defuzzificacao = new Defuzzificacao(expressoes, saida);
        double velocidade = defuzzificacao.deffuzificar();
        System.out.println("");
        System.out.println("Velocidade do robô " + velocidade);
        return velocidade;
    }
}
